package br.com.esporte.view.site.grupo.criar;

import org.apache.wicket.Component;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.CompoundPropertyModel;

import br.com.base.exception.NegociosException;
import br.com.esporte.model.Grupo;
import br.com.esporte.model.TipoEsporteEnum;
import br.com.esporte.view.infra.generic.IPaginaCadastro;
import br.com.esporte.view.site.grupo.PaginaGrupo;
import br.com.esporte.view.site.grupo.meus.PaginaMeusGrupo;
/**
 * 
 * @author Milton Domingues
 *
 */
public class PaginaCriarGrupo extends PaginaGrupo implements IPaginaCadastro {

	private Grupo grupo;

	public PaginaCriarGrupo(TipoEsporteEnum tipoEsporteGrupo) {
		super(tipoEsporteGrupo);
	}

	@Override
	public void acaoSalvar() {
		getFachada().inserir(grupo, getUsuarioLogado());
	}

	@Override
	public void carregarView() {
		grupo = new Grupo();
		grupo.setTipo(getTipoEsporteEnum());
		setDefaultModelEntity();
	}

	private Button criarBtSalvar() {
		Button botao = new Button("btSalvar"){
			private static final long serialVersionUID = -3960483125623050680L;
			@Override
			public void onSubmit() {
				try{
					acaoSalvar();
					setResponsePage(new PaginaMeusGrupo(getTipoEsporteEnum()));
					addInfo("Grupo cadastrada com sucesso.");
				}catch (NegociosException e) {
					tratarException(e);
				}
			}
		};
		return botao;
	}

	private Form<Component> criarForm() {
		Form<Component> form = new Form<Component>("form");
		form.add(new TextField<String>("nome"));
		form.add(new TextArea<String>("descricao"));
		form.add(criarBtSalvar());
		return form;
	}

	public Grupo getGrupo() {
		return grupo;
	}

	@Override
	public boolean isUpdate() {
		return getGrupo().getId() != null;
	}

	@Override
	public void montarPagina() {
		super.montarPagina();
		addContainer(criarForm());
	}

	@Override
	public void setDefaultModelEntity() {
		setDefaultModel(new CompoundPropertyModel<Grupo>(grupo));
	}

	public void setGrup(Grupo grupo) {
		this.grupo = grupo;
	}

}
